package com.hwadee.ems.service;

import com.hwadee.ems.domain.dto.PageQuery;
import com.hwadee.ems.domain.dto.Result;
import com.hwadee.ems.domain.po.TrainingProgramCourse;
import com.hwadee.ems.domain.vo.CourseVO;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * <p>
 * 人才培养方案课程 服务类
 * </p>
 *
 * @author EnosElinsa
 * @since 2024/06/21
 */
public interface ITrainingProgramCourseService extends IService<TrainingProgramCourse> {

    Result<IPage<CourseVO>> pageByTrainingProgramId(
        PageQuery pageQuery,
        Long trainingProgramId, 
        Long category,
        Long semesterId,
        Long selectionMethod,
        Long assessmentMethod
    );

    Result<Long> saveWithCourseCountIncrement(TrainingProgramCourse trainingProgramCourse);

    Result<Void> removeByIdWithCourseCountDecrement(TrainingProgramCourse trainingProgramCourse);

}
